package com.hdsx.restful.glzt.roadline.lxxx.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.hdsx.restful.dao.Mapper;
import com.hdsx.restful.glzt.roadline.lxxx.bean.Line;
import com.hdsx.restful.glzt.roadline.lxxx.bean.Lx;
import com.hdsx.restful.glzt.roadline.lxxx.bean.LxdmMapLxmc;
import com.hdsx.restful.glzt.roadline.lxxx.bean.Xzqh;
import com.hdsx.restful.glzt.roadline.lxxx.bean.Znode;
import com.hdsx.restful.glzt.structure.ql.bean.DoubleValueName;
import com.hdsx.restful.glzt.structure.ql.bean.IntValueName;

@Mapper
public interface LxMapper {
	
	int queryLxCountByParameter(Map<String ,String> map);
	
	List<Xzqh> queryLxByParameter(Map<String ,Object> map);
	
	
	/**
	 * 查询单条数据
	 *
	 * @param id 唯一标识
	 * @return 若存在返回Lx，若不存在返回null
	 */
	Lx queryOne(String id);

	/**
	 * 根据id删除数据
	 *
	 * @param id 唯一标识
	 * @return 若成功返回删除数目，若失败返回-1
	 */
	int delete(String id);

	/**
	 * 添加路线数据
	 *
	 * 
	 * @return 若成功返回添加数目，若失败返回-1
	 */
	int add(Lx lx);

	/**
	 * 更新路线数据.
	 *

	 * @return 若成功返回更新数目，若失败返回-1
	 */
	int update(Lx lx);
	
	int queryLxCountByLxdm(Map<String ,String> map);
	
	List<Lx> queryLxBylxdm(Map<String ,Object> map);
	
	int queryLxCountByLxmc(Map<String, String> map);
	
	List<Lx> queryByLxmc(Map<String, Object> parameter);
	
	int queryLxCountByXzqhbm(Map<String, String> map);
	
	List<Xzqh> queryLxByXzqhbm(Map<String, Object> parameter);
	
	List<Lx> queryList(Map<String,Object> parameter);

	List<Lx> statisticsJsdjByLxdm(Map<String,Object> parameter);

	List<Lx> statisticsJsdjByXzqhbm(Map<String,Object> parameter);
	
	List<Lx> statisticsXzdjByXzqhbm(Map<String,Object> parameter);
	
	List<Lx> statisticsCdtzByLxdm(Map<String,Object> parameter);
	
	List<Lx> statisticsCdtzByXzqhbm(Map<String,Object> parameter);
	/**
	 * 某线的路段统计
	 */
	List<IntValueName> countLdTotalByParameter(Map<String, Object> parameter);
	/**
	 * 某线的路段统计
	 */
	List<DoubleValueName> countLdLengthByParameter(Map<String, Object> parameter);
	/**
	 * 某线的路段统计
	 */
	List<String> selectLdClassify(Map<String, Object> parameter);
	/**
	 * 路线统计
	 * @param parameter
	 * @return
	 */
	List<IntValueName> countTotalByParameter(Map<String, Object> parameter);
	/**
	 * 路线统计
	 * @param parameter
	 * @return
	 */
	List<DoubleValueName> countLengthByParameter(Map<String, Object> parameter);
	Lx queryLineString(String id);
	/**
	 * 行政等级查询节点 H G S X
	 * @return
	 */
	List<Znode> xzdjNode(); 

	Lx posByLonLat(Map<String, Object> parameter);

	Lx lonLatByRoadPos(Map<String, Object> parameter);

	Lx queryByQzdzh(Map<String, Object> parameter);

	List<Xzqh> querySQH(Map<String, String> parameter);

	List<Xzqh> queryByXzqhbm(Map<String, String> parameter);

	List<Xzqh> queryXQH(Map<String, Object> parameter);

	int queryCountXQH(Map<String, Object> parameter); 
	/**
	 * 联想输入
	 * @param lx
	 * @return
	 */
	List<LxdmMapLxmc> selectResultsByParameter(@Param("dm")String dm, @Param("mc")String mc);
	
	Lx selectById(String id);
	
	Line ldDetail(Line param);
	/**
	 * 第三级数据
	 * @param line
	 * @return
	 */
	List<Line> third();
	
	List<String> selectName(String name);
}
